package com.adnaan.backend.utils;

import com.adnaan.backend.entity.dto.OptionDto;

import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * author: adnaan
 * create: 2025-02-21 17:47
 * Description:
 */
public class ConverterUtil {

    /**
     * 用于将实体列表转换为选项列表，并提取指定属性作为选项的标签和值。
     *
     * @param items          实体列表
     * @param labelExtractor 用于提取选项标签的函数
     * @param valueExtractor 用于提取选项值的函数
     * @param <T>            实体类型
     */
    public static <T> List<OptionDto> convertToOptionDtoList(
            List<T> items,
            Function<T, String> labelExtractor,
            Function<T, String> valueExtractor) {
        return items.stream()
                .map(item -> {
                    OptionDto optionDto = new OptionDto();
                    optionDto.setLabel(labelExtractor.apply(item));
                    optionDto.setValue(valueExtractor.apply(item));
                    return optionDto;
                })
                .collect(Collectors.toList());
    }
}